/*
 * NodeTemplate.h
 *
 *  Created on: 2011/08/07
 *      Author: naoki
 */

#ifndef INCLUDED_NTENGINE_SCENE_NODETEMPLATE_H
#define INCLUDED_NTENGINE_SCENE_NODETEMPLATE_H

#include "Scene/src/BatchImpl.h"
#include "NTEngine/Math/Matrix3x4.h"

namespace NTEngine {
namespace Math {
	class Vector3;
} // namespace Math
using namespace Math;

namespace Scene {

//ノードの原型。ライブラリの外からは見えないのでいつものImplはない。
class NodeTemplate {
public:
	NodeTemplate()
	: mId( -1 )
	, mChild( -1 )
	, mBrother( -1 )
	, mBatch( 0 )
	, mName( 0 )
	//, mHasSkin( false )
	{
		mTransform.identity();
		mOffset.identity();
		mLocal.identity();
	}
	~NodeTemplate(){
		mBatch = 0; //所有権は持っていないので単なる参照はずし
		mName = 0; //同上
	}
	int mId;
	int mChild;
	int mBrother;
	const Batch::Impl* mBatch;
	Matrix3x4 mTransform; // 親空間からの変換行列
	Matrix3x4 mOffset; // ローカルへのオフセット行列
	Matrix3x4 mLocal; // ローカル空間からの変換行列
	const char* mName;
//	bool mHasSkin; // スキン情報ある？
};

} //namespace Scene
} //namespace NTEngine

#endif // INCLUDED_NTENGINE_SCENE_NODETEMPLATE_H
